package com.service;

import com.bean.User;
import com.dao.BaseUserDao;
import com.dao.imp.UserDaoMysql;
import com.exception.idNumberException;
import com.util.IpUtil;
import com.util.UserEnum;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @Author: 柏竹
 * @Description:
 * @Date_Created_in: 2021-05-28 19:14
 * @Modified_By: Sans
 * @Project:
 */
public class UserService{
    
    private static BaseUserDao  dao = new UserDaoMysql();
    
    /**
     * 查 库 全部用户(总数,新增)
     *
     * @return {size:总数,day:新增}
     */
    public static Map<String, Integer> console() {
        return dao.console();
    }
    
    /**
     * 查 库 全部用户
     *
     * @param limit
     * @param offset
     * @param pageNumber
     * @return {size:总数,day:新增}
     */
    public static List<User> findAll(boolean limit , String offset , String pageNumber) {
        if (limit){
            int newOffset = Integer.parseInt(offset);
            int newPageNumber = Integer.parseInt(pageNumber);
            return dao.findAll(limit,newOffset,newPageNumber);
        }
        return dao.findAll(limit,0,0);
    }
    
    /**
     * 查 库 指定用户
     *
     * @param type
     * @param data
     * @return 查询用户
     */
    public static List<User> findUser(String type , String data) {
        if (data.length() <= 0) {
            return null;
        }
        return dao.findUser(type,data);
    }
    
    /**
     * 用户 录入
     *
     * @param user
     * @return 是否成功
     */
    public static boolean insert(User user) {
        boolean bool = false;
        if (user == null){
            return false;
        }else {
            user.setIp(IpUtil.getOutIPV4());
            try {
                bool = dao.insert(user);
            } catch (idNumberException e) {
                System.err.println("身份证重复！");
            }
        }
        return bool;
    }
    
    /**
     * 用户 修改
     *
     * @param id
     * @param newUser
     * @return 是否成功
     */
    public static boolean update(String id , User newUser) {
        List<User> userList = dao.findUser(UserEnum.ID.type , id);
        int userid = Integer.parseInt(id);
        Boolean bool = false;
        if (newUser.getUserphone().equals(userList.get(0).getUserphone())){
            bool = dao.update(userid,newUser);
        }else{
            dao.delete(userid);
            bool = insert(newUser);
        }
        return bool;
    }
    
    /**
     * 用户 删除
     *
     * @param id
     * @return 是否成功
     */
    public static boolean delete(String id) {
        if (id == null){
            return false;
        }
        return dao.delete(Integer.parseInt(id));
    }
    
    
    /**
     * 用户 登录账号
     *
     * @param username 账号
     * @param password 密码
     * @return 是否成功
     */
    public static boolean login(String username , String password) {
        return dao.login(username,password);
    }
    
    /**
     * 用户 登录记录
     *
     * @param username 账号
     * @return 是否成功
     */
    public static Boolean login_log(String username) {
        return dao.login_log(username,new Date(),IpUtil.getOutIPV4());
    }
    
    /**
     * 用户 退出、下线
     *
     * @param id 标号
     * @return 是否成功
     */
    public static boolean logout(String id) {
        return dao.logout(id);
    }
}
